const Koa = require("koa");
const app = new Koa();
const bodyparser = require("koa-bodyparser");
const fs = require("fs");
app.use(bodyparser());

// 使用 Koa 常用方法，实现用户信息管理
app.use(async (ctx) => {
    const filePath = __dirname + "/userList.json";
    // 添加用户
    if (ctx.method === "POST" && ctx.path === "/users") {
        // JSON.parse(); => 根据字符串解析出 JSON 对象，实际上就是我们的 JS 的 {}
        // JSON.stringify(); => 把 JS 对象（[]、{}）序列化成字符串

        // 如果文件不存在，说明是第一次写入
        if (!fs.existsSync(filePath)) {
            // 拿到用户信息
            const user = ctx.request.body;
            // 我们将其放到数组中（因为后续还会存储其他用户信息，我们就使用数组来存储），作为第一个成员存储
            const userArr = [user];
            // 存储到文件中，注意，存入时一定要使用 JSON.stringify() 序列化成字符串
            fs.writeFileSync(filePath, JSON.stringify(userArr));
        } else {
            // 读取这个文件
            const content = fs.readFileSync(filePath, "utf8");
            // 使用 JSON.parse() 解析成数组对象
            const arr = JSON.parse(content);
            // 再向这个数组中，添加一个用户信息
            arr.push(ctx.request.body);
            // 再使用 JSON.stringify() 序列化成数组字符串，存入到文件中
            fs.writeFileSync(filePath, JSON.stringify(arr));
        }
        // 存储成功
        ctx.body = "添加成功";
        return;
    }

    // 获取用户列表
    if (ctx.method === "GET" && ctx.path === "/users") {
        return;
    }

    // 修改用户信息
    if (ctx.method === "PUT" && ctx.path === "/users") {
        ctx.body = "修改用户信息接口";
        return;
    }

    // 删除用户
    if (ctx.method === "DELETE" && ctx.path === "/users") {
        ctx.body = "删除用户信息接口";
        return;
    }
});

app.listen(9000, () => {
    console.log("Koa server running at http://localhost:9000");
});
